Integração NUTELLABOOT (máquinas maratona linux) — MOJ docs

Integração NUTELLABOOT (máquinas maratona linux)

O nutellaboot (produção: https://nutellaboot.mdp.naquadah.com.br) é o serviço que gerencia as máquinas mlinux das sedes: boot pela rede, telemetria (specs, memória, load, editores abertos), travamento de tela e comandos. O MOJ se integra a ele POR CONTEST para três coisas: o panorama do lado cliente (como as máquinas se comportaram na prova, por sede/país, com a MESMA hierarquia do placar), comandos nas máquinas (admin em tudo; .cstaff/.staff nas da própria sede) e a correlação máquina↔︎time (roster/binding).

O modelo de dados do serviço (o que importa p/ o MOJ)

Como o MOJ guarda e usa

Testes

server/test/smoke-contest-nutella.sh roda contra o mock nutella-mock.py (stdlib; serve fixtures com os shapes reais, REGISTRA POST/PUT e o GET de samples com a query) — cobre config, escopo, coleta ponta-a-ponta (since/until, elo por UA com conta de papel tentando roubar o vínculo, adoção/perfis/pressão/rank_ed, privacidade do cache, --reaggregate sem rede, modo proxy sem access.log), a coleta em LOTE (2 requests p/ 2 sedes, limit=5000), a telemetria nova com frota MISTA (agente novo × antigo), o bruto ANTIGO por máquina e o fallback sem a rota de lote reagregando IGUAL, roster VAZIO (sedes pelo UA do login · imagem listada à mão · erro claro sem nada), sede recusada ⇒ skipped e serviço mudo ⇒ falha, catálogo, gates de comando e push-roster. A view tem o seu: smoke-mlinux-view.gjs.sh (DOM falso no gjs, do jeito que o relatório a inlina; cache novo × antigo, pt × en). O elo pelo MAC (clone de machine_id + reboot) e o binding de reserva estão no smoke-contest-nutella.sh; a publicação no login tem o smoke-nutella-bind.sh (o que publica e o que NÃO, dedup, reboot, 404 do roster, 503 ⇒ retry, replay, e o caminho DESTACADO de produção com o serviço lento); a identidade estável, no smoke-contest-anomalies.sh; os webhooks, no smoke-nutella-hook.sh (opacidade do 401, corpo adulterado, outro segredo, frescor, 413, repetição por delivery, webhook.test, eventos de máquina, tetos de aviso, fora da prova, instalação por entrada com webhook alheio intocado/remoção, e a trilha de Anomalias). O relatório é coberto no smoke-contest-report.sh (página condicional, sem MAC/teams/_rows, view 2.0 embutida, invariantes). O jq do coletor vive em VARIÁVEIS (AGG_JQ), que o jq-portability.sh não vê: rode o coletor com o jq 1.7 da imagem (--reaggregate num bruto guardado) antes de deployar mudança nele.